package com.xiaohudie.SGGJUC;

/**
 * @Author xiao hu die
 * @Date 2022/3/7 23:12
 * @Version 1.0
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;

/**线程集合类
 * ArrayList出现并发修改异常
 * 解决方法使用Collections中的synchron使用线程安全的List集合*/
public class TestArrayList {
    public static void main(String[] args) {
        //List<String> list = new ArrayList<>();
        /**使用Collections中自带的synchronized方法*/
        // List<String> list = Collections.synchronizedList(new ArrayList<>());
        /**使用CopyOnWriterArrayList(Lock实现的)
         * 写时复制技术*/
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        for (int i = 1; i <=20 ; i++) {
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list);
            },String.valueOf(i)).start();
        }
    }
}
